#! /usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2020-04-11 15:20
# @Author : youngchaolin

print()

'''
1 函数名指向的是内存地址，使用函数名+()就可以执行函数
2 函数名就是变量，可以像基本数据类型那样赋值
3 函数名可以作为容器型数据类型的元素
4 函数名可以做为函数的参数
5 函数名可以作为函数的返回值
'''

# 函数名指向内存地址
def func():
    print('我是函数')

print(func,type(func))

# 函数名是变量
f1=func
f2=f1
f3=f2
# f3是可以执行的
f3()

# 函数名可以作为容器型数据类型的元素
def func1():
    print('I am func1')

def func2():
    print('I am func2')

def func3():
    print('I am func3')

li=[func1,func2,func3]
print(li)

# 可以循环执行列表里的函数
for f in li:
    f()

# 函数名可以做为函数的参数
def func(x):
    x()

def print_circle():
    print('你特别喜欢画饼，可惜我吃不下')

func(print_circle)

# 函数名可以作为函数的返回值
def func(x):
    print('I am func')
    return x

def func2():
    print('I am func2')

ret=func(func2)
print(ret)
ret()


